██████╗ ███████╗████████╗██╗██████╗ ███████╗██████╗ ██╗ █████╗
██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██████╔╝█████╗ ██║ ██║██████╔╝█████╗ ██║ ██║██║███████║
██╔══██╗██╔══╝ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║██╔══██║
██║ ██║███████╗ ██║ ██║██║ ███████╗██████╔╝██║██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═════╝ ╚═╝╚═╝ ╚═╝
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Applicazione web
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
Una mwcaapplicazione web (mwcqweb application in mwcginglese, abbreviato mwcwweb app), in mwdainformatica ed in particolare nella mwdqprogrammazione web, indica genericamente tutte le mwdgapplicazioni distribuite ovvero applicazioni accessibili/fruibili via mwdwweb per mezzo di un mweanetwork, come ad esempio una mweqIntranet all'interno di un mwegsistema informatico o attraverso mwewinternet, cioè in una architettura tipica di tipo mwfaclient-server, offrendo determinati servizi all'utente mwfqclient.
Contents
• Storia
• Esempi
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Storia
Quando le prime mwhwapplicazioni client-server cominciarono ad essere diffuse nel panorama informatico, da metà circa degli mwiaanni ottanta, questi sistemi richiedevano che per ognuno di essi fosse installata la parte mwiqmwigclient direttamente sulla mwiwmwjaworkstation di ciascun utente. In breve qualunque aggiornamento, mwjqpatch o modifica dell'applicativo mwjglato server (mwjwserver-side) si trasformava nella esigenza di installare le versioni aggiornate su tutte le mwkaworkstation degli utenti dell'applicativo stesso; questo tipo di problematiche inducevano ovviamente, in modo diretto, un onere economico non indifferente per il produttore del mwkqsoftware, e di conseguenza un costo periodico di adeguamento per tutti gli utenti di questo tipo di applicazione informatica.
Questo modello applicativo è divenuto piuttosto popolare alla fine degli mwkwanni novanta con la diffusione di Internet, nel contesto del mwlaWeb 2.0: infatti l'opportunità di aggiornare ed evolvere a costo ridotto il proprio applicativo, senza essere costretti a distribuire numerosi aggiornamenti ai propri clienti attraverso supporti fisici, ha reso la soluzione piuttosto popolare per molti produttori mwlqsoftware.
Dagli mwlwanni 2000 come mwmaGoogle e mwmqMicrosoft hanno implementato interi pacchetti applicativi per mwmgoffice automation, tradizionalmente venduti in modo distribuito su supporti mwmwCD-ROM, e che ora si stanno velocemente trasformando a tutti gli effetti in mwnawebapps (es. mwnqGoogle Docs). Spesso sono applicazioni web complesse di tipo mwngenterprise, ovvero di business ad uso interno prettamente aziendale, o verso i propri clienti esterni.
Descrizione
Funzionamento
Si basa sul concetto di funzionamento di un mwpgclient che accede all'applicazione connettendosi a funzionalità di mwpwelaborazione residenti su un mwqaapplication server utilizzando come terminali utente normali mwqqweb browser appoggiandosi dunque ai consueti mwqgprotocolli di rete (i mwqwclient finalizzati unicamente a collegarsi come terminali di mwraweb-application vengono chiamati sovente mwrqthin client). Attraverso le mwrgwebapps vengono spesso passati mwrwflussi di dati in formati mwsaSGML generici (o addirittura mwsqcustom) direttamente ad altre applicazioni che, in virtù dell'uso di questo tipo di mwsgoutput, sono sempre accessibili attraverso un comune mwswweb browser.
La parte dinamica mwtqmwtglato client (o client-side) di questi sistemi informatici (es. mwtwapplet) è affidata sempre a linguaggi standard, come ad esempio mwuaJavaScript, che sono inclusi in tutti i mwuqbrowser. Il crescente successo conseguito da mwuglibrerie esperte, ormai veri e propri mwuwframework come mwvaJQuery, tecnologie dinamiche come mwvqAJAX, oppure mwvgmwvwplug-in, come il conosciutissimo mwwamwwqFlash Player, consente oggi di "pilotare" ed arricchire le mwwgmwwwinterfacce utente in modo completo ed efficiente. Di contro, le mwxaweb-application generano il loro mwxqmwxgoutput in modo dinamico pilotando un mwxwmwyafront-end composto da mwyqdocumenti mwygWeb, destinati quindi ad un semplice mwywweb browser. Le prime mwzaweb apps consistevano infatti nella generazione di pagine standard mwzqHTML/mwzgXHTML; successivamente con l'evolversi delle tecnologie associate e soprattutto con la nascita di nuovi standard, si cominciarono a "distribuire" attraverso di esse documenti in formati ancora più "neutri", come l'mwzwXML. In breve ogni singola mwaapagina Web viene inviata al mwaqclient come fosse un documento statico, ma la sequenza delle pagine può fornire un'esperienza interattiva, poiché lmwag'mwawmwbainput dell'utente è restituito attraverso gli mwbqelementi mwbgembedded della pagina stessa. Durante la mwbwsessione, il mwcabrowser web interpreta e visualizza le pagine, e dunque diventa il mwcqclient universale per tutte le mwcgweb-application, indipendentemente dal produttore del software.
Motivazioni
Alcuni mwgwsiti web sono mwhastatici ovvero il contenuto può essere modificato solo da una persona con un livello di accesso privilegiato (a volte definita mwhqmwhgwebmaster) per "aggiornare" manualmente il contenuto attraverso la modifica manuale del codice HTML delle pagine web che devono essere modificate. Generalmente, questo viene fatto modificando un insieme di mwhwmwiafile presenti sul mwiqserver web (il computer che fa "girare" il sito web), in cui ciascun mwigfile rappresenta una singola pagina.
Spesso è importante che i visitatori di un mwjasito web vedano che il contenuto sia coerente ed aggiornato. Il contenuto di un sito che varia nel tempo necessita di essere cambiato continuamente. Per esempio, in un sito web di mwjqe-commerce è richiesto che vengano pubblicati solamente gli annunci relativi a prodotti non ancora venduti. È anche importante che i nuovi annunci siano pubblicati al massimo uno o due giorni dopo che sono stati inviati dal venditore. Se una di queste condizioni non viene rispettata, il sito probabilmente non avrà molto successo.
Le modifiche all'aspetto di un sito web statico richiedono che il manutentore del sito visiti ed aggiorni ogni mwjwfile che compone il sito web. I siti web tipicamente possono crescere fino a comprendere migliaia di mwkafile e per questo l'operazione può non essere un compito banale. Il manutentore responsabile del sito di annunci di automobili ha l'onere aggiuntivo di tenere aggiornati anche gli annunci stessi. Se ogni pagina nel sito web rappresenta un annuncio relativo ad una particolare automobile, il mwkqwebmaster ha la necessità di eliminare le pagine che compongono l'annuncio scaduto e di creare le pagine per le nuove inserzioni. Quindi ha anche l'esigenza che nessun collegamento su altre pagine punti alle pagine rimosse. La quantità di lavoro da compiere diventa molta in un tempo davvero breve. Il manutentore del sito può anche, comprensibilmente, commettere errori e dimenticarsi di aggiornare o rimuovere pagine importanti.
Da qui l'esigenza di sostituire le operazioni ripetitive e manuali con soluzioni applicative automatizzate, che svolgano queste funzioni in modo più efficiente, rapido e sicuro. Infatti, in un sito web generato mwkwdinamicamente (detto in questo caso mwlamwlqsito dinamico), al manutentore non è richiesto di visitare ogni pagina per eseguire l'aggiornamento del contenuto o dello stile. Se il nostro ipotetico manutentore del sito degli annunci di automobili decidesse di costruire un'applicazione web per gestire questo sistema, potrebbe conservare una lista di "nuovi annunci" slegata dalla struttura HTML (memorizzandola ad esempio in una generica mwlgbase di dati). Sarebbe quindi in grado di istruire la propria applicazione web perché, quando un utente visita il sito, questa interroghi la base di dati e generi il codice HTML corrispondente ad uno di questi "annunci recenti" ovvero al loro indice.
Caratteristiche
Per sua natura una mwoqwebapp può presentarsi con diverse strutture ed organizzazioni logiche, poiché di fatto racchiude in sé, allo stesso tempo, un modello tecnico ed una filosofia di sviluppo. Tuttavia, sul piano dell'mwoginformatica teorica è possibile riconoscere una strutturazione tipica su più livelli (mwowarchitettura multi-tier) che va a mappare l'architettura a livello fisico-infrastrutturale di un mwpasistema informatico (mwpqarchitettura three-tier) sul quale l'applicazione web è presente e viene mwpgeseguita.
Nella maggioranza dei casi è infatti possibile identificare:
• mwqglogica di presentazione (o mwqwpresentation layer): primo livello associabile al terminale di fruizione, visualizzazione o presentazione a favore dell'utente (mwrafront-end) attraverso il mwrqmotore di rendering del mwrgweb browser del client ovvero l'mwrwinterfaccia utente (tìpicamente realizzata tramite pagine mwsaHTML e mwsqCSS, mwsgJSP o mwswJSF in tecnologia mwtaJava EE, mwtqJavaScript o utilizzando un framework, mwtgXSLT ecc...); questa di fatto sostituisce le mwtwGUI propriamente dette delle applicazioni software non web-based.
• mwuqmwuglogica di business (o mwuwbusiness logic): secondo livello costituito dal mwvamotore applicativo, ovvero un mwvqcore applicativo (mwvgback-end) o logica applicativa o di elaborazione presente tipicamente su un mwvwapplication server e costituita da mwwacodice sorgente in un qualche linguaggio di sviluppo dinamico mwwqmwwglato-server (per es. mwwwPHP, mwxaASP, mwxqASP.NET, un qualche mwxgCGI, mwxwservlet e JavaAction in linguaggio mwyqJava, ecc.); questa riceve, elabora e soddisfa le richieste del client. La presenza di questo strato è ciò che differenzia un'applicazione web da un normale sito web, in quanto implementa il servizio web sotto forma di mwygcodice sorgente che essa fornisce al client.
• mw0qstrato dati (o mw0gdata layer): terzo eventuale livello riconducibile al mw0wmotore database associato (per es. mw1aMySQL, mw1qMSSql, mw1gOracle, mw1wDB2, mw2aPostgreSQL ecc.) per la gestione della mw2qpersistenza dei dati e la loro interrogazione attraverso opportuni tool (es. mw2gJDBC e mw2wORM come mw3aHibernate, mw3qIbatis, Mybatis ecc...), ricevendo e soddisfacendo le richieste di lettura/scrittura sul DB da parte della logica applicativa. Può risiedere sull'application server assieme alla logica applicativa o direttamente sul DB.
Ricapitolando, il mw4aweb browser del mw4qclient invia le proprie richieste, tramite il protocollo mw4gHTTP/mw4wHTTPS, al livello intermedio ovvero al motore applicativo dinamico del mw5aweb server, che da una parte interpreta e gestisce le interrogazioni al motore DBMS e dall'altra genera il risultato in un mw5qoutput diretto allo stesso mw5gbrowser, che lo interpreta e lo restituisce all'utente sotto forma di mw5wWeb. Un'applicazione web si caratterizza dunque essenzialmente per il trasferimento di dati o informazioni da uno strato all'altro ovvero dal front-end fino al back-end e viceversa con in aggiunta eventuali elaborazioni/computazione sulla parte di core business. Spesso inoltre in applicazioni web di una certa dimensione o complessità, al pari di mw6asiti web e mw6qportali, è presente una pagina iniziale (mw6gmw6whome page) con un mw7amenù iniziale e relativi sottomenù per l'insieme di funzionalità o servizi offerti all'utente.
Progettazione e sviluppo
Come per le altre applicazioni lo sviluppo delle applicazioni web avviene tipicamente seguendo il mw9gciclo di vita del software a partire da requisiti/specifiche. Il lavoro del programmatore web tipicamente avviene in locale sul proprio PC con mw9wIDE installato e configurato. A differenza delle altre forme di programmazione lo sviluppo in locale delle applicazioni web necessita del supporto di un application server installato sempre in locale sul PC dello sviluppatore che funzioni da mw-aback-end su cui effettuare il mw-qdeployment dell'applicazione ad ogni passo dello sviluppo testando mw-ginterfaccia utente e mw-wbusinees logic, verificando poi il risultato prodotto (mw-afront-end) digitando il relativo url sul web browser. Spesso, sempre ai fini di test dell'applicazione è necessario installare in locale anche una base di dati che funzioni da mw-qdata layer ovvero verificandone la persistenza. mw-gSistemi di versionamento (es. mw-wSVN) consentono di gestire salvataggi (commit) multipli del codice prodotto su server remoti (tipicamente mwaqaambiente di test) tra più sviluppatori senza creare conflitti.
Spesso relativamente allo sviluppo della parte di presentazione ed elaborazione si utilizzano mwaqiframework web (ad es. in Java mwaqmStruts e mwaqqSpring implementanti il mwaqudesign pattern mwaqyModel-View-Controller (MVC)), e che semplificano lo sviluppo dell'applicazione stessa riducendone i tempi di realizzazione. Anche per la gestione della persistenza è possibile utilizzare framework di sviluppo come ad esempio mwaqcHibernate. Alcune elaborazioni possono essere invece eseguite con maggior vantaggio mwaqglato client da parte del browser (es. con linguaggio mwaqkJavaScript e relativi framework come mwaqoJQuery) o richiamate sul server dal lato utente in maniera asincrona utilizzando ad esempio la tecnologia mwaqsAJAX.
Esempi
Le applicazioni mwarmweb-based oggi concorrono ad implementare in tutto o in parte soluzioni software all'interno di mwarqmotori di ricerca, mwaruweb forum, mwaryblog, mwarcwebmail, mwargsocial network, mwarksocial media, mwaroCMS, mwarse-commerce, mwarwMMORPG, piattaforme di mwar0teleconferenza o strumenti di dhat, gestionali aziendali di vario tipo e molto altro ancora. Troviamo applicazioni web un po' ovunque, ma nel linguaggio comune ci si riferisce ad esse come semplici "siti web" o mwar8portali web evoluti.
Esempi didattici tipici sono:
• bacheca di annunci di lavoro: l'azienda registrata pubblica il suo annuncio di lavoro e l'interessato risponde inviando tramite form le sue generalità e l'mwasmupload del proprio curriculum.
• ricerca di un sito tramite un mwasgmotore di ricerca: l'utente digita la parola chiave da cercare sull'interfaccia web sul web browser ed invia il dato ad un mwaskserver che tramite opportuni mwasoalgoritmi esegue una mwassquery particolare su una base di dati per l'individuazione dell'indirizzo della mwaswrisorsa web ricercata.
• una pagina di commento di un mwas4blog o di un forum, dove l'utente inserisce nell'interfaccia web (text area) il proprio commento, inviato poi alla logica di elaborazione per l'inserimento nella base di dati e reso disponibile ad altri utenti visualizzatori della pagina.
• una pagina di mwatelogin per l'accesso alle funzionalità e servizi di un sito, portale, forum, attraverso il mwatiform iniziale che rappresenta la parte di presentazione all'utente dell'applicazione, una parte di elaborazione che esegue il controllo dei dati acquisiti dal sistema con quelli presenti nella base di dati per la loro validazione o meno ed infine una pagina di conferma o errore per l'operazione effettuata dall'utente;
• una piattaforma mwatwWiki (es. mwat0Wikipedia): una modifica del testo di una voce viene passata ad una logica di elaborazione che provvede all'inserimento della modifica nella base di dati; viceversa una richiesta di voce è una mwat4query sulla base di dati o mwat8repository.
• gestione dell'anagrafica dei mwauecurriculum vitae all'interno di una società o di un motore di ricerca di lavoro dove l'utente in fase di scrittura inserisce il CV attraverso una pagina di mwauiform lato front-end, i cui dati vengono passati prima alla parte di business per eventuali elaborazioni e poi infine memorizzati nel lato back-end di persistenza della base di dati, e viceversa in fase inversa di lettura.
• siti di mwauqe-commerce (es. mwauuebay): l'utente acquista uno o più prodotti selezionandoli e registrandoli in memoria (mwauysessione) nel carrello acquisti ed invoca l'ordine memorizzato in un base di dati dopo l'esecuzione della transazione finanziaria per il pagamento dovuto fornendo i dati della propria mwauccarta di credito.
Applicazioni web più complesse sono invece quelle bancarie per la gestione di pratiche (tipicamente ad uso interno tramite Intranet) e flussi di denaro e transazioni finanziarie (es. mwaukhome banking) tra istituto di credito e clienti. Altri esempi pratici più complessi sono ad esempio i servizi di mwauowebmail (es. mwausGmail), le piattaforme mwauwsocial network come mwau0Facebook, mwau4Linkedin, mwau8Instagram, mwavaFlicker, i mwaveCMS mwaviWordPress, mwavmJoomla, mwavqDrupal, mwavuMicrosoft Sharepoint, quelle applicazioni che ci permettono di fare ricerche sul web come mwavyGoogle; di collaborare a progetti, come mwavcSourceForge; di acquistare prodotti da un'asta, come avviene su mwavgeBay. Inoltre sono nati molti siti web che fungono da mwavkdirectory di mwavoscript, spesso gratuiti e/o mwavsOpen source, come mwavwHotscripts.com (In lingua Inglese). Ma questo è solo un esempio poiché usando un qualsiasi motore di ricerca è facile scoprire un'infinità di applicazioni web in tutte le lingue e paesi.
Voci correlate
Altri progetti
Altri progetti
• Wikimedia Commons
• Wikimedia Commons contiene immagini o altri file sull'applicazione web
• Wikibooks - Applicazioni Web in React, Bootstrap, MongoDB, Express
Collegamenti esterni
• citerefbritannica-com(EN) Adam Volle, Web application, su Enciclopedia Britannica, Encyclopædia Britannica, Inc.
• citerefopen-library(EN) Opere riguardanti Web applications, su Open Library, Internet Archive.
• mwawuSemplici esempi di WebApps usando PHP, su icosaedro.it.
• mwawc(EN) mwawgWeb Applications 1.0 un tentativo di documentazione tecnica formale (Working Draft) sul funzionamento delle mwawkWebApps
• mwaws(EN) mwawwWeb Applications mwaw0WebApps all'interno del progetto mwaw4Open Directory Project